DROP TABLE IF EXISTS `aktivniprodukti`;
DROP VIEW IF EXISTS `aktivniprodukti`;

CREATE TABLE `customer` (
  `CustomerID` int NOT NULL,
  `CustomerName` varchar(100) DEFAULT NULL,
  `CustomerSurName` varchar(100) DEFAULT NULL,
  `Email` varchar(100) DEFAULT NULL,
  `Address` varchar(255) DEFAULT NULL,
  `CustomerContact` varchar(20) DEFAULT NULL,
  `Password` varchar(255) NOT NULL,
  PRIMARY KEY (`CustomerID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

CREATE TABLE `customerfeedback` (
  `FeedbackID` int NOT NULL,
  `CustomerID` int DEFAULT NULL,
  `ProductID` int DEFAULT NULL,
  `Rating` int DEFAULT NULL,
  `Comment` text,
  `FeedbackDate` date DEFAULT NULL,
  `TransactionID` int DEFAULT NULL,
  PRIMARY KEY (`FeedbackID`),
  KEY `CustomerID` (`CustomerID`),
  KEY `ProductID` (`ProductID`),
  KEY `fk_feedback_transaction` (`TransactionID`),
  CONSTRAINT `customerfeedback_ibfk_1` FOREIGN KEY (`CustomerID`) REFERENCES `customer` (`CustomerID`),
  CONSTRAINT `customerfeedback_ibfk_2` FOREIGN KEY (`ProductID`) REFERENCES `product` (`ProductID`),
  CONSTRAINT `fk_feedback_transaction` FOREIGN KEY (`TransactionID`) REFERENCES `procurement` (`TransactionID`),
  CONSTRAINT `customerfeedback_chk_1` CHECK ((`Rating` between 1 and 5))
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

CREATE TABLE `employee` (
  `EmployeeID` int NOT NULL,
  `EmployeeName` varchar(100) DEFAULT NULL,
  `EmployeeSurName` varchar(100) DEFAULT NULL,
  `Position` varchar(100) DEFAULT NULL,
  `Department` varchar(100) DEFAULT NULL,
  `Email` varchar(100) DEFAULT NULL,
  `Password` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`EmployeeID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

CREATE TABLE `maintenance` (
  `MainID` int NOT NULL,
  `EmployeeID` int DEFAULT NULL,
  `ProductID` int DEFAULT NULL,
  `MainDate` date DEFAULT NULL,
  `Description` text,
  `Cost` decimal(10,2) DEFAULT NULL,
  `Status` enum('Pending','Completed') DEFAULT 'Pending',
  `StartTime` datetime DEFAULT CURRENT_TIMESTAMP,
  `EndTime` datetime DEFAULT NULL,
  PRIMARY KEY (`MainID`),
  KEY `EmployeeID` (`EmployeeID`),
  KEY `ProductID` (`ProductID`),
  CONSTRAINT `maintenance_ibfk_1` FOREIGN KEY (`EmployeeID`) REFERENCES `employee` (`EmployeeID`),
  CONSTRAINT `maintenance_ibfk_2` FOREIGN KEY (`ProductID`) REFERENCES `product` (`ProductID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

CREATE TABLE `procurement` (
  `TransactionID` int NOT NULL,
  `EmployeeID` int DEFAULT NULL,
  `CustomerID` int DEFAULT NULL,
  `ProductID` int DEFAULT NULL,
  `ProcurementDate` date DEFAULT NULL,
  `Quantity` int DEFAULT NULL,
  `Status` enum('Pending','Approved','Rejected') DEFAULT 'Pending',
  `Notified` tinyint(1) DEFAULT '0',
  `GroupID` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`TransactionID`),
  KEY `EmployeeID` (`EmployeeID`),
  KEY `CustomerID` (`CustomerID`),
  KEY `ProductID` (`ProductID`),
  CONSTRAINT `procurement_ibfk_1` FOREIGN KEY (`EmployeeID`) REFERENCES `employee` (`EmployeeID`),
  CONSTRAINT `procurement_ibfk_2` FOREIGN KEY (`CustomerID`) REFERENCES `customer` (`CustomerID`),
  CONSTRAINT `procurement_ibfk_3` FOREIGN KEY (`ProductID`) REFERENCES `product` (`ProductID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

CREATE TABLE `product` (
  `ProductID` int NOT NULL,
  `Model` varchar(100) DEFAULT NULL,
  `Price` decimal(10,2) DEFAULT NULL,
  `LicensePlate` varchar(50) DEFAULT NULL,
  `Status` enum('available','sold','rented','maintenance') NOT NULL,
  PRIMARY KEY (`ProductID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

CREATE TABLE `t_type` (
  `TransactionID` int NOT NULL,
  `Type` enum('Rent','Buy') NOT NULL,
  `Duration` int DEFAULT NULL,
  `MonthlyPay` decimal(10,2) DEFAULT NULL,
  `TotalPrice` decimal(10,2) DEFAULT NULL,
  PRIMARY KEY (`TransactionID`),
  CONSTRAINT `t_type_ibfk_1` FOREIGN KEY (`TransactionID`) REFERENCES `procurement` (`TransactionID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

CREATE TABLE `trailer` (
  `ProductID` int NOT NULL,
  `Capacity` decimal(10,2) DEFAULT NULL,
  PRIMARY KEY (`ProductID`),
  CONSTRAINT `trailer_ibfk_1` FOREIGN KEY (`ProductID`) REFERENCES `product` (`ProductID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

CREATE TABLE `truck` (
  `ProductID` int NOT NULL,
  `HP` int DEFAULT NULL,
  PRIMARY KEY (`ProductID`),
  CONSTRAINT `truck_ibfk_1` FOREIGN KEY (`ProductID`) REFERENCES `product` (`ProductID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

CREATE TABLE `views` (
  `CustomerID` int NOT NULL,
  `ProductID` int NOT NULL,
  PRIMARY KEY (`CustomerID`,`ProductID`),
  KEY `ProductID` (`ProductID`),
  CONSTRAINT `views_ibfk_1` FOREIGN KEY (`CustomerID`) REFERENCES `customer` (`CustomerID`),
  CONSTRAINT `views_ibfk_2` FOREIGN KEY (`ProductID`) REFERENCES `product` (`ProductID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

CREATE TABLE `wallet` (
  `WalletID` int NOT NULL AUTO_INCREMENT,
  `CustomerID` int NOT NULL,
  `Balance` decimal(10,2) NOT NULL DEFAULT '0.00',
  `CardNumber` varchar(16) DEFAULT NULL,
  `ExpiryDate` date DEFAULT NULL,
  `CVV` varchar(4) DEFAULT NULL,
  `CardHolderName` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`WalletID`),
  KEY `CustomerID` (`CustomerID`),
  CONSTRAINT `wallet_ibfk_1` FOREIGN KEY (`CustomerID`) REFERENCES `customer` (`CustomerID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

-- VIEWS
CREATE VIEW `aktivniprodukti` AS
SELECT `product`.`ProductID` AS `ProductID`,
       `product`.`Model` AS `Model`,
       `product`.`Price` AS `Price`,
       `product`.`LicensePlate` AS `LicensePlate`
FROM `product`
WHERE (`product`.`Status` = 'available');
